export default () => {
    /* 日期格式化 */
    // 年(y) 可以用 1-4 个占位符
    // 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符，
    // 毫秒(S)、季节(E)、星期(W) 只能用 1 个占位符
    // 例子：
    // "yyyy-MM-dd hh:mm:ss.S 星期W E" ==> "2016-06-20 08:09:04.423 星期一 夏"
    // "yyyy-M-d h:m:s.S"      ==> "2016-6-20 8:9:4.18"
    Date.prototype.format = function format(formatStr) {
        const moon = this.getMonth() + 1;
        const rule = {
            "M+": moon, // 月
            "d+": this.getDate(), // 日
            "h+": this.getHours(), // 时
            "m+": this.getMinutes(), // 分
            "s+": this.getSeconds(), // 秒
            "q+": Math.floor((this.getMonth() + 3) / 3), // 季度
            "E": ["冬", "春", "夏", "秋"][Math.floor(moon % 12 / 3)], // 季节
            "W": ["日", "一", "二", "三", "四", "五", "六"][this.getDay()], // 星期
            "S": this.getMilliseconds() //毫秒
        };
        let formatRes = formatStr;
        if (/(y+)/.test(formatRes)) formatRes = formatRes.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); // 年
        for (let analytical in rule) {
            if (new RegExp("(" + analytical + ")").test(formatRes)) {
                formatRes = formatRes.replace(RegExp.$1, RegExp.$1.length === 1 ? rule[analytical] : ("00" + rule[analytical]).substr(("" + rule[analytical]).length));
            }
        }
        return formatRes;
    };

    String.prototype.toDate = function() {
        return new Date(this.replace(/-/g, "/"))
    }
    String.prototype.dateFormat = function dateFormat(formatStr) {
        if(!formatStr) formatStr = 'yyyy-MM-dd hh:mm:ss'
        if(this) {
            let date = new Date(this.replace(/-/g, "/"))
            if(date.toString() == "Invalid Date") {
                return ''
            } else {
                return new Date(this.replace(/-/g, "/")).format(formatStr);
            }
        } else {
            return ''
        }
    };

    // 手机号格式化，隐藏中间四位
    String.prototype.phoneNumberHide = function phone() {
        return this.replace(/(\d{3})\d{4}(\d{4})/, "$1****$2");
    };

    // 数字前补零
    Number.prototype.prefixZero = function prefixZero(length = 2) {
        const str = this.toString(),
            diff = length - str.length;
        return diff > 0 ? Array(diff + 1).join("0") + this : str;
    };
    // 截取路由
    String.prototype.getUrl = function getUrl() {
        let reg = /^https?:\/\/.*?\/(.*)/ig
        let arr = reg.exec(this)
        return arr[1]
    }
}
